"""
中间件的定义,返回一个可以被钓鱼那个的中间件,其本质就是装饰器(闭包)
def simple_middleware(get_response):
    # 此处编写的代码仅在django第一次配置和初始化时执行一次

    def middleware(request):
        # 此处编写的代码会在每个请求处理视图请被调用

        response = get_response(request)
        # 此处编写的代码会在每个请求处理视图之后被调用

        return response

    return middleware

添加中间件:
在setting.py中的MIDDLEWARE中添加 'users.middleware.my_middleware',

中间件的执行顺序类似装饰器的执行顺序
"""


def my_middleware(get_response):
    # 此处编写的代码仅在django第一次配置和初始化时执行一次,在调试模式下可能被执行两次
    print('init 被调用')
    def middleware(request):
        # 此处编写的代码会在每个请求处理视图请被调用
        print('before request 被调用')
        response = get_response(request)
        # 此处编写的代码会在每个请求处理视图之后被调用
        print("after request 被调用用")
        return response

    return middleware

"""
参考:
https://www.cnblogs.com/huchong/p/7819296.html#_label1

class Middle_Test(object):
    def process_request(self,request):
        print("来了")
        pass

    def process_view(self, request, callback,callback_args, callback_kwargs):
        i=1
        pass

    def process_template_response(self, request, response):
        pass

    def process_exception(self, request, exception):
        pass

    def process_response(self, request, response):
        print("走了")
        return response

前两个方法是请求进来时要穿越执行的,后三个方法是请求出去是要穿越执行的

注册中间件:
    在settings.py中MIDDLEWARE里添加'sparks.middleware.auth.Middle_Test'


"""
